Michael Weghorn [Fri, 2 May 2025 15:52:19 +0000 (17:52 +0200)]
tdf#166055 avmedia qt: Use GStreamer frame grabber by default
As described in tdf#166055, QtFrameGrabber currently
still causes issues (freezes or crashes).
The QtMultimedia API does not provide a simple
way to synchronously retrieve a video frame, so
the current approach is to connect to the
QVideoSink::videoFrameChanged signal and start
playing the video until the first frame arrives.
There are various QtMultimedia plugins/backends
(at least GStreamer and ffmpeg for Linux). Some
use multiple threads internally. Some logic
needs to be run in the main thread however, so
it's not possible to move things to a separate
thread/event loop to decouple it from the main
thread.
As a consequence, there is a need to trigger
event processing while waiting for the frame,
as QVideoSink::videoFrameChanged would otherwise
never be called.
Triggering event processing can have bad side-effects
however, as seen in tdf#166055, e.g. leading to
endless recursion or crashes when processing LO events.
tdf#166055 qt avmedia: Provide media/player size right away
for more background and some thoughts.
For now, avoid the problem by using
the GStreamer based frame grabber even with
QtPlayer by default.
This means that the QtMultimedia
framework is still used for video playback with the
qt6 VCL plugin, where LO's GStreamer implementation
doesn't work properly, see
tdf#145735 avmedia qt: Use QtMultimedia for Qt 6 media playback
. However, in order to preview images (that are e.g. shown
in Impress when not in presentation mode) the LO GStreamer
backend is used now.
(That works fine, no UI interaction is needed
for that.)
Adjust QtPlayer::createFrameGrabber accordingly
to return the LO default platform player/frame grabber
implementation (which is the GStreamer one on Linux), see also
MediaWindowImpl::createPlayer. Use the service to
avoid having to link GStreamer libraries.
However, allow to force the use of QtFrameGrabber
by setting environment variable
SAL_VCL_QT_USE_QT_FRAME_GRABBER.
Change-Id: Ibe5c42adf6e8f699f33e5f089bd2f6076c3de4f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184912 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
(cherry picked from commit 08533ca4e2526644b803c40c0c3d3c96f43762af)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184918 Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Gbp-Pq: Name avmedia-qt-use-gstreamer-frame-grabber-by-default.diff
WANG Xuerui [Thu, 22 Aug 2024 06:22:49 +0000 (14:22 +0800)]
[PATCH] sunjre: check all four possible OpenJDK variants for libjvm.so
Since OpenJDK 21, the "minimal" and "zero" variants of JVM no longer
reside in the "server" directory in $JAVA_HOME/lib, making the loader
unable to find libjvm.so. This regresses LO builds on platforms with
only those variants of JVM (i.e. without a HotSpot port).
Example error message is like this:
> exception occurred: Could not create Java implementation loader at
> ./stoc/source/javaloader/javaloader.cxx:551
Fix it by probing all four possible variant directories for libjvm.so.
This is tested on Debian unstable (loong64 port) to fix the packaging.
Bug-Debian: https://bugs.debian.org/955271
Forwarded: no
GnuPG supports a trust-on-first-use layer that sits on top of the
standard PGP trust model. If this is enabled, 'gpg --list-keys' needs
write and lock permissions on the TOFU database to return any useful
data. Allow this access through AppArmor.
Vincas Dargis [Sat, 4 Aug 2018 14:40:05 +0000 (17:40 +0300)]
[PATCH] apparmor: use dri-enumerate abstraction
Remove backported rule and use new dri-enumerate abstraction instead.
dri-enumerate is available in AppArmor 2.13, which recently migrated
into Debian Buster.
Gemeinsame Unterverzeichnisse: odk-old/config und odk/config.
Gemeinsame Unterverzeichnisse: odk-old/docs und odk/docs.
Gemeinsame Unterverzeichnisse: odk-old/examples und odk/examples.
Gemeinsame Unterverzeichnisse: odk-old/config und odk/config.
Gemeinsame Unterverzeichnisse: odk-old/docs und odk/docs.
Gemeinsame Unterverzeichnisse: odk-old/examples und odk/examples.
14:13 < mst__> _rene_, the toolkit unoapi tests are known to be flaky (in some
system dependent way) e.g. on the Win@6 tinderbox it always
crashes
14:14 < mst__> _rene_, sc.ScAccessible* tests also fail on some systems some of
the time
* debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff: add
back
* debian/patches/qt-Consolidate-to-one-toOUString-helper.diff: add from
upstream; fixes --enable-qt6 builds with the above
* debian/rules:
- remove USE_GSTREAMER=n setting on build-indep since it somehow also
affects the AVMEDIA conditional which makes build-indep builds loose
the gallery sound files (closes: #1108832), and move the gstreamer -dev
packages from B-D-A to B-D consequently